简单实现图像的读取,显示与保存

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import cv2
image=cv2.imread("C:\\Users\\wangfeiyun\\Desktop\\test.jpg",4)  # -1为保持原格式不变
                         # 0为将图像调整为单通道的灰度图像
                         # 1为图像调整为三通道的BGR图像
                         # 4为任何可能的颜色格式读取图像
                         # 还有许多的文件类型格式,常用的就以上这几种
cv2.imshow("image",image) # 双引号里面的image是窗口的名称,另一个image是要显示的图像
cv2.imwrite("C:\\Users\\wangfeiyun\\Desktop\\3.jpg",image) #保存
cv2.waitKey() #用来等待按键,按键后语句被执行,获得返回值
cv2.destroyAllWindows() #用来释放窗口





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java实现图像读取和嵌入数字水印也是很容易的。Java有很多图像处理库可供选择,例如Java 2D API和OpenCV等。在这里,我们使用Java 2D API来演示如何实现图像读取和嵌入数字水印。 首先,我们需要导入Java 2D API。以下是一个简单读取图像文件的代码示例: ```java import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class ImageWatermarking { public static void main(String[] args) { try { // 读取图像文件 File imageFile = new File("image.jpg"); BufferedImage image = ImageIO.read(imageFile); // 显示图像 ImageIcon icon = new ImageIcon(image); JLabel label = new JLabel(icon); JFrame frame = new JFrame(); frame.add(label); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } } ``` 接下来,我们可以使用嵌入数字水印的算法来嵌入数字水印。以下是一个简单的嵌入数字水印的代码示例: ```java import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class ImageWatermarking { public static void main(String[] args) { try { // 读取图像文件 File imageFile = new File("image.jpg"); BufferedImage image = ImageIO.read(imageFile); // 将数字水印转换为二进制格式 String watermark = "0123456789"; String watermarkBin = ""; for (int i = 0; i < watermark.length(); i++) { int ascii = (int) watermark.charAt(i); String binary = Integer.toBinaryString(ascii); watermarkBin += String.format("%8s", binary).replaceAll(" ", "0"); } // 将数字水印嵌入到图像像素值 int k = 0; for (int i = 0; i < image.getWidth(); i++) { for (int j = 0; j < image.getHeight(); j++) { if (k < watermarkBin.length()) { int bit = Integer.parseInt(watermarkBin.substring(k, k + 1)); int rgb = image.getRGB(i, j); int red = (rgb >> 16) & 0xFF; int green = (rgb >> 8) & 0xFF; int blue = rgb & 0xFF; red = (red & ~1) | bit; int newRgb = (red << 16) | (green << 8) | blue; image.setRGB(i, j, newRgb); k++; } } } // 保存嵌入数字水印后的图像 ImageIO.write(image, "jpg", new File("watermarked_image.jpg")); // 显示嵌入数字水印后的图像 ImageIcon icon = new ImageIcon("watermarked_image.jpg"); JLabel label = new JLabel(icon); JFrame frame = new JFrame(); frame.add(label); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的代码,我们首先将数字水印转换为二进制格式,然后读取图像文件并遍历图像的每个像素点,将数字水印嵌入到图像像素值。最后,我们将嵌入数字水印后的图像保存到文件并显示出来。 请注意,这只是一个简单的示例,实际上,数字水印的嵌入和提取算法会更加复杂和高级。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值