C#与Python 通过共享内存实现tiff图像交互
2022/2/18 7:12:01
本文主要是介绍C#与Python 通过共享内存实现tiff图像交互,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第一种方法:共享内存只存tiff图像里的灰度信息
using System; using System.IO; using System.IO.MemoryMappedFiles; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Media.Imaging; namespace WpfApp1 { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { try { Stream imageStreamSource = new FileStream("test.tif", FileMode.Open, FileAccess.Read, FileShare.Read); var decoder = new TiffBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); BitmapSource bitmapSource = decoder.Frames[0]; Int32 PixelHeight = bitmapSource.PixelHeight; // 图像高度 Int32 PixelWidth = bitmapSource.PixelWidth; // 图像宽度 Int32 Stride = (PixelWidth * bitmapSource.Format.BitsPerPixel + 7) / 8; // 跨距宽度 UInt16[] imgBuffer = new UInt16[PixelHeight * PixelWidth];//创建图像灰度值数据所需的数组 bitmapSource.CopyPixels(imgBuffer, Stride, 0);//读取灰度值到数组 //16位灰度转化成8位 byte[] bytes = new byte[2048 * 2048 * 2]; IntPtr intptr = Marshal.UnsafeAddrOfPinnedArrayElement(imgBuffer, 0); Marshal.Copy(intptr, bytes, 0, 2048 * 2048 * 2); //向共享内存写入灰度值数据 var mmf = MemoryMappedFile.CreateOrOpen("test1", bytes.Length, MemoryMappedFileAccess.ReadWrite); var viewAccessor = mmf.CreateViewAccessor(0, bytes.Length); viewAccessor.Write(0, bytes.Length); ; viewAccessor.WriteArray<byte>(0, bytes, 0, bytes.Length); MessageBox.Show("write ok" + bytes.Length.ToString()); } catch (System.Exception s) { MessageBox.Show(s.Message); } } } }C# 向共享内存只写入tiff灰度数据
#!/usr/bin/env python # _*_ coding:utf-8 _*_ import contextlib import mmap import numpy as np # tif图像像素宽度2048高度2048,位深16bit,故一张图像的字节大小为2048*2048*2 byteSize = 2048 * 2048 * 2 with contextlib.closing(mmap.mmap(-1, byteSize, tagname="test1", access=mmap.ACCESS_READ)) as m: m.tell() s = m.read() a = np.frombuffer(s, dtype=np.uint16).reshape(2048, 2048) # 转换为二维元组 print(a)Python读取灰度数据
这篇关于C#与Python 通过共享内存实现tiff图像交互的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具